# -*- coding: utf-8 -*-
import datetime
from django.shortcuts import render, render_to_response, redirect
from django.template import Context, RequestContext
from django.http import HttpResponse
from universidades.views import sidebar
from indicadores.models import IndicadoresPorcentaje, IndicadoresBooleanos, IndicadoresEnteros, IndicadoresChoices
from django.views.decorators.csrf import csrf_exempt
from forms import BuenasPracticasform, Gobernanzaform, Participantesform, Financiacionform, Indicadoresselcform
from usuarios.models import Usuario
from models import BuenasPracticas, Gobernanza, Participantes, Financiacion, Indicadoresselc
from validaciones.models import checkpermiso
from universidades.models import Universidad, Region, Pais_region

Permisos2 = ['validaciones.Participantes_Publico'] 

def agregar(request):
	is_adm_institucional = request.user.groups.filter(
        name='Adm. Institucional').exists()
	
	if not is_adm_institucional:
		return redirect('/plataforma')
	
	usuario = Usuario.objects.get( user = request.user)
	menu= sidebar(request)
	context = Context({
			'menu' : menu
            }) 

	if request.method == 'POST':
		#arma un diccionanrio para pasarle al formulario
		bppost={'universidad' : usuario.universidad.id,
				'dimension' : request.POST['dimension'],
				'fecha_desde' : request.POST['fecha_desde'],
				'fecha_hasta' : request.POST['fecha_hasta'],
				'iniciativa' : request.POST['iniciativa'],
				'objetivo' : request.POST['objetivo'],
				'desarrollo' : request.POST['desarrollo'],
				'fases' : request.POST['fases'],
				'factores' : request.POST['factores'],
				'valoracion' : request.POST['valoracion']
				}
		bpform= BuenasPracticasform(bppost)#crea el formulario
		
		if bpform.is_valid():
			error=False
			bppk= bpform.save()#guarda el formulario y retorna su id
			bpsaved = BuenasPracticas.objects.get(pk= bppk)
			condicion=True
			aux=1
			
			while(condicion):#loop para agregar las instancias de gobernanza
				nombre1='gtipo'+unicode(aux)
				nombre2='gdescriptcion'+unicode(aux)
				
				if request.POST.has_key(nombre1):
					#arma los diccionarios para el formulario de gobernanza
					gpost=	{'tipo' : request.POST[nombre1],
							'descriptcion' : request.POST[nombre2]}
					gform= Gobernanzaform(gpost)#crea el formulario
					
					if gform.is_valid():
						gpk=gform.save()#guarda el formulario
						gsaved=Gobernanza.objects.get(pk=gpk)
						bpsaved.gobernanza.add(gsaved)
					else:#bandera de error y condicion de salida
						error=True
						condicion=False
				
				else:#condicion de salida
					condicion=False

				aux+=1
			
			if error:
				print ('fallo')
			
			error=False
			aux=1
			condicion=True
			
			while(condicion):#mismo que gobernanza aplicado a financiacion
				nombre1='ftipo'+unicode(aux)
				nombre2='fdescriptcion'+unicode(aux)
				
				if request.POST.has_key(nombre1):
					fpost=	{'tipo' : request.POST[nombre1],
							'descriptcion' : request.POST[nombre2]}
					fform= Financiacionform(fpost)
					
					if fform.is_valid():
						fpk=fform.save()
						fsaved=Financiacion.objects.get(pk=fpk)
						bpsaved.financiacion.add(fsaved)
					else:
						error=True
						condicion=False
				
				else:
					condicion=False

				aux+=1
			
			if error:
				print ('fallo2')
			
			error=False
			aux=1
			condicion=True
			
			while(condicion):#mismmo que gobernanza aplicado a participantes
				nombre1='cantidad'+unicode(aux)
				nombre2='grado'+unicode(aux)
				
				if request.POST.has_key(nombre1):
					ppost=	{'cantidad' : request.POST[nombre1],
							'grado' : request.POST[nombre2]}
					pform= Participantesform(ppost)
					
					if pform.is_valid():
						ppk=pform.save()
						psaved=Participantes.objects.get(pk=ppk)
						bpsaved.participantes.add(psaved)
					else:
						error=True
						condicion=False
				
				else:
					condicion=False

				aux+=1
			
			if error:
				print ('fallo3')
			
			error=False
			
			#verifica que indicadores fueron marcados y los asocia
			if request.POST.has_key('indicadoreschoices[]'):
				for i in request.POST.getlist('indicadoreschoices[]'):
					print (' cho '+unicode(i))
					ind=IndicadoresChoices.objects.get(id=i)
					bpsaved.indicadorescho.add(ind)
					nombre1='r-cho-'+i;
					nombre2='r1-cho-'+i;
					indpost={'descripcion': request.POST[nombre2],
							'respuesta': request.POST[nombre1],
							'indicador': 'cho-'+i}
					indform=Indicadoresselcform(indpost)
					if indform.is_valid():
						indpk=indform.save()
						indsaved=Indicadoresselc.objects.get(pk=indpk)
						bpsaved.indicadorselc.add(indsaved)
					else:
						error=True
						condicion=False

			if request.POST.has_key('indicadoresbooleanos[]'):
				for i in request.POST.getlist('indicadoresbooleanos[]'):
					print (' bol '+unicode(i))
					ind=IndicadoresBooleanos.objects.get(id=i)
					bpsaved.indicadoresbol.add(ind)
					nombre1='r-bol-'+i;
					nombre2='r1-bol-'+i;
					indpost={'descripcion': request.POST[nombre2],
							'respuesta': request.POST[nombre1],
							'indicador': 'bol-'+i}
					indform=Indicadoresselcform(indpost)
					if indform.is_valid():
						indpk=indform.save()
						indsaved=Indicadoresselc.objects.get(pk=indpk)
						bpsaved.indicadorselc.add(indsaved)
					else:
						error=True
						condicion=False

			if request.POST.has_key('indicadoresenteros[]'):
				for i in request.POST.getlist('indicadoresenteros[]'):
					print (' ent '+unicode(i))
					ind=IndicadoresEnteros.objects.get(id=i)
					bpsaved.indicadoresent.add(ind)
					nombre1='r-ent-'+i;
					nombre2='r1-ent-'+i;
					indpost={'descripcion': request.POST[nombre2],
							'respuesta': request.POST[nombre1],
							'indicador': 'ent-'+i}
					indform=Indicadoresselcform(indpost)
					if indform.is_valid():
						indpk=indform.save()
						indsaved=Indicadoresselc.objects.get(pk=indpk)
						bpsaved.indicadorselc.add(indsaved)
					else:
						error=True
						condicion=False

			if request.POST.has_key('indicadoresporcentaje[]'):
				for i in request.POST.getlist('indicadoresporcentaje[]'):
					print (' por '+unicode(i))
					ind=IndicadoresPorcentaje.objects.get(id=i)
					bpsaved.indicadorespor.add(ind)
					nombre1='r-por-'+i;
					nombre2='r1-por-'+i;
					indpost={'descripcion': request.POST[nombre2],
							'respuesta': request.POST[nombre1],
							'indicador': 'por-'+i}
					indform=Indicadoresselcform(indpost)
					if indform.is_valid():
						indpk=indform.save()
						indsaved=Indicadoresselc.objects.get(pk=indpk)
						bpsaved.indicadorselc.add(indsaved)
					else:
						error=True
						condicion=False
			
			context.update({'exito' : True})
		
		else:
			context.update({'error' : True})
			print (' fail')		

	context_instance = RequestContext(request)
	return render_to_response('formulario_buenaspracticas.html', context,
                              context_instance=context_instance)


def BorrarBuenasPracticas(bppk):#borra un formulario y todo lo que tenga asociado
	bp = BuenasPracticas.objects.get(pk = bppk)

	for g in bp.gobernanza.all():
		bp.gobernanza.remove(g)
		g.delete()

	for p in bp.participantes.all():
		bp.participantes.remove(p)
		p.delete()

	for f in bp.financiacion.all():
		bp.financiacion.remove(f)
		f.delete()

	for ind in bp.indicadorselc.all():
		bp.indicadorselc.remove(ind)
		ind.delete()

	for i in bp.indicadorescho.all():
		bp.indicadorescho.remove(i)

	for i in bp.indicadoresent.all():
		bp.indicadoresent.remove(i)

	for i in bp.indicadoresbol.all():
		bp.indicadoresbol.remove(i)
	
	for i in bp.indicadorespor.all():
		bp.indicadorespor.remove(i)

	bp.delete()


def listar(request, identificador = -1):#mejora: agrupar por fecha y al hacer click en la fehca mostar correspondientes
	is_adm_institucional = request.user.groups.filter(
        name='Adm. Institucional').exists()
	
	if not is_adm_institucional:
		return redirect('/plataforma')
	
	usuario = Usuario.objects.get( user = request.user)
	
	if identificador != -1 and BuenasPracticas.objects.filter(pk=identificador).exists():
		bp=BuenasPracticas.objects.get(pk = identificador)
		
		if bp.universidad.id != usuario.universidad.id:
			return redirect('/plataforma/buenaspracticas/listar')
		
		BorrarBuenasPracticas(identificador)

	buenaspracticasFC=BuenasPracticas.objects.filter(universidad=usuario.universidad, dimension=1).order_by('fecha_desde')
	buenaspracticasTC=BuenasPracticas.objects.filter(universidad=usuario.universidad, dimension=2).order_by('fecha_desde')
	buenaspracticasCS=BuenasPracticas.objects.filter(universidad=usuario.universidad, dimension=3).order_by('fecha_desde')

	menu= sidebar(request)
	context = Context({
			'buenaspracticasFC' : buenaspracticasFC,
			'buenaspracticasTC' : buenaspracticasTC,
			'buenaspracticasCS' : buenaspracticasCS,
			'menu' : menu
            }) 

	context_instance = RequestContext(request)
	return render_to_response('listado.html', context,
                              context_instance=context_instance)

def convertir_a_timestamp( fecha ):
   return datetime.datetime.strptime( fecha , '%d/%m/%Y' ).date()

def editar(request, identificador = -1):#mejora: agrupar por fecha y al hacer click en la fehca mostar correspondientes
	is_adm_institucional = request.user.groups.filter(
        name='Adm. Institucional').exists()
	
	if not is_adm_institucional:
		return redirect('/plataforma')
	
	usuario = Usuario.objects.get( user = request.user)
	
	if identificador != -1 and BuenasPracticas.objects.filter(pk=identificador).exists():
		bp=BuenasPracticas.objects.get(pk = identificador)
		
		if bp.universidad.id != usuario.universidad.id:
			return redirect('/plataforma/buenaspracticas/listar')
	
	else:
		return redirect('/plataforma/buenaspracticas/listar')

	if request.method == 'POST':
		bp.fecha_desde=convertir_a_timestamp(request.POST['fecha_desde'])
		
		if request.POST['fecha_hasta']:
			bp.fecha_hasta=convertir_a_timestamp(request.POST['fecha_hasta'])
		else:
			bp.fecha_hasta=None
		
		bp.iniciativa=request.POST['iniciativa']
		bp.objetivo=request.POST['objetivo']
		bp.desarrollo=request.POST['desarrollo']
		bp.fases=request.POST['fases']
		bp.factores=request.POST['factores']
		bp.valoracion=request.POST['valoracion']
		bp.save()
		nuevosM2M(request, bp)
		editM2M(request, bp)
		editIndicadores(request, bp)

	indhtml=htmlIndicadores(bp)

	menu= sidebar(request)
	context = Context({
			'bp' : bp,
			'f_desde' : unicode(bp.fecha_desde),
			'f_hasta' : unicode(bp.fecha_hasta),
			'indhtml' : indhtml,
			'menu' : menu,
            }) 

	context_instance = RequestContext(request)
	return render_to_response('editarformulario.html', context,
                              context_instance=context_instance)


def nuevosM2M(request, bp):
	error=False
	condicion=True
	aux=2
	
	while(condicion):#loop para agregar las instancias de gobernanza
		nombre1='gtipo'+unicode(aux)
		nombre2='gdescriptcion'+unicode(aux)
		
		if request.POST.has_key(nombre1):
			#arma los diccionarios para el formulario de gobernanza
			gpost=	{'tipo' : request.POST[nombre1],
					'descriptcion' : request.POST[nombre2]}
			gform= Gobernanzaform(gpost)#crea el formulario
			
			if gform.is_valid():
				gpk=gform.save()#guarda el formulario
				gsaved=Gobernanza.objects.get(pk=gpk)
				bp.gobernanza.add(gsaved)
			else:#bandera de error y condicion de salida
				error=True
				condicion=False
		
		else:#condicion de salida
			condicion=False

		aux+=1
	
	if error:
		print ('fallo')
	
	error=False
	aux=2
	condicion=True
	
	while(condicion):#mismo que gobernanza aplicado a financiacion
		nombre1='ftipo'+unicode(aux)
		nombre2='fdescriptcion'+unicode(aux)
		
		if request.POST.has_key(nombre1):
			fpost=	{'tipo' : request.POST[nombre1],
					'descriptcion' : request.POST[nombre2]}
			fform= Financiacionform(fpost)
			
			if fform.is_valid():
				fpk=fform.save()
				fsaved=Financiacion.objects.get(pk=fpk)
				bp.financiacion.add(fsaved)
			else:
				error=True
				condicion=False
		else:
			condicion=False

		aux+=1
	
	if error:
		print ('fallo2')
	
	error=False
	aux=2
	condicion=True
	
	while(condicion):#mismmo que gobernanza aplicado a participantes
		nombre1='cantidad'+unicode(aux)
		nombre2='grado'+unicode(aux)
		
		if request.POST.has_key(nombre1):
			ppost=	{'cantidad' : request.POST[nombre1],
					'grado' : request.POST[nombre2]}
			pform= Participantesform(ppost)
			
			if pform.is_valid():
				ppk=pform.save()
				psaved=Participantes.objects.get(pk=ppk)
				bp.participantes.add(psaved)
			else:
				error=True
				condicion=False
		
		else:
			condicion=False

		aux+=1
	
	if error:
		print ('fallo3')

def editM2M(request, bp):

	for g in bp.gobernanza.all():
		nombre1=unicode(g.id)+'gtipo'
		nombre2=unicode(g.id)+'gdescriptcion'
		if request.POST.has_key(nombre1):
			g.tipo=request.POST[nombre1]
			g.descriptcion=request.POST[nombre2]
			g.save()

	for f in bp.financiacion.all():
		nombre1=unicode(f.id)+'ftipo'
		nombre2=unicode(f.id)+'fdescriptcion'
		if request.POST.has_key(nombre1):
			f.tipo=request.POST[nombre1]
			f.descriptcion=request.POST[nombre2]
			f.save()

	for p in bp.participantes.all():
		nombre1=unicode(p.id)+'cantidad'
		nombre2=unicode(p.id)+'grado'
		if request.POST.has_key(nombre1):
			p.cantidad=request.POST[nombre1]
			p.grado=request.POST[nombre2]
			p.save()

def editIndicadores(request, bp):
	if request.POST.has_key('indicadoreschoices[]'):
		for i in bp.indicadorescho.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'cho-'+unicode(i.id):
					aux=r2
					break
			if not i.id in request.POST.getlist('indicadoreschoices[]'):
				bp.indicadorselc.remove(aux)
				aux.delete()
				bp.indicadorescho.remove(i)
			else:
				nombre1='r-cho-'+unicode(i.id)
				nombre2='r1-cho-'+unicode(i.id)
				aux.respuesta=request.POST[nombre1]
				aux.descripcion=request.POST[nombre2]
				aux.save()
	else:
		for i in bp.indicadorescho.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'cho-'+unicode(i.id):
					bp.indicadorselc.remove(r2)
					r2.delete()
			bp.indicadorescho.remove(i)

	if request.POST.has_key('indicadoresbooleanos[]'):
		for i in bp.indicadoresbol.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'bol-'+unicode(i.id):
					aux=r2
					break
			if not i.id in request.POST.getlist('indicadoresbooleanos[]'):
				bp.indicadorselc.remove(aux)
				aux.delete()
				bp.indicadoresbol.remove(i)
			else:
				nombre1='r-bol-'+unicode(i.id)
				nombre2='r1-bol-'+unicode(i.id)
				aux.respuesta=request.POST[nombre1]
				aux.descripcion=request.POST[nombre2]
				aux.save()
	else:
		for i in bp.indicadoresbol.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'cho-'+unicode(i.id):
					bp.indicadorselc.remove(r2)
					r2.delete()
			bp.indicadoresbol.remove(i)


	if request.POST.has_key('indicadoresenteros[]'):
		for i in bp.indicadoresent.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'ent-'+unicode(i.id):
					aux=r2
					break
			if not i.id in request.POST.getlist('indicadoresenteros[]'):
				bp.indicadorselc.remove(aux)
				aux.delete()
				bp.indicadoresent.remove(i)
			else:
				nombre1='r-ent-'+unicode(i.id)
				nombre2='r1-ent-'+unicode(i.id)
				aux.respuesta=request.POST[nombre1]
				aux.descripcion=request.POST[nombre2]
				aux.save()
	else:
		for i in bp.indicadoresent.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'ent-'+unicode(i.id):
					bp.indicadorselc.remove(r2)
					r2.delete()
			bp.indicadoresent.remove(i)

	if request.POST.has_key('indicadoresporcentaje[]'):
		for i in bp.indicadorespor.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'por-'+unicode(i.id):
					aux=r2
					break
			if not i.id in request.POST.getlist('indicadoresporcentaje[]'):
				bp.indicadorselc.remove(aux)
				aux.delete()
				bp.indicadorespor.remove(i)
			else:
				nombre1='r-por-'+unicode(i.id)
				nombre2='r1-por-'+unicode(i.id)
				aux.respuesta=request.POST[nombre1]
				aux.descripcion=request.POST[nombre2]
				aux.save()
	else:
		for i in bp.indicadorespor.all():
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'por-'+unicode(i.id):
					bp.indicadorselc.remove(r2)
					r2.delete()
			bp.indicadorespor.remove(i)

	if request.POST.has_key('indicadoreschoices[]'):
		for i in request.POST.getlist('indicadoreschoices[]'):
			ind=IndicadoresChoices.objects.get(id=i)
			if not ind in bp.indicadorescho.all():
				bp.indicadorescho.add(ind)
				nombre1='r-cho-'+unicode(ind.id);
				nombre2='r1-cho-'+unicode(ind.id);
				indpost={'descripcion': request.POST[nombre2],
						'respuesta': request.POST[nombre1],
						'indicador': 'cho-'+unicode(ind.id)}
				indform=Indicadoresselcform(indpost)
				if indform.is_valid():
					indpk=indform.save()
					indsaved=Indicadoresselc.objects.get(pk=indpk)
					bp.indicadorselc.add(indsaved)

	if request.POST.has_key('indicadoresbooleanos[]'):
		for i in request.POST.getlist('indicadoresbooleanos[]'):
			ind=IndicadoresBooleanos.objects.get(id=i)
			if not ind in bp.indicadoresbol.all():
				bp.indicadoresbol.add(ind)
				nombre1='r-bol-'+unicode(ind.id);
				nombre2='r1-bol-'+unicode(ind.id);
				indpost={'descripcion': request.POST[nombre2],
						'respuesta': request.POST[nombre1],
						'indicador': 'bol-'+unicode(ind.id)}
				indform=Indicadoresselcform(indpost)
				if indform.is_valid():
					indpk=indform.save()
					indsaved=Indicadoresselc.objects.get(pk=indpk)
					bp.indicadorselc.add(indsaved)

	if request.POST.has_key('indicadoresenteros[]'):
		for i in request.POST.getlist('indicadoresenteros[]'):
			ind=IndicadoresEnteros.objects.get(id=i)
			if not ind in bp.indicadoresent.all():
				bp.indicadoresent.add(ind)
				nombre1='r-ent-'+unicode(ind.id);
				nombre2='r1-ent-'+unicode(ind.id);
				indpost={'descripcion': request.POST[nombre2],
						'respuesta': request.POST[nombre1],
						'indicador': 'ent-'+unicode(ind.id)}
				indform=Indicadoresselcform(indpost)
				if indform.is_valid():
					indpk=indform.save()
					indsaved=Indicadoresselc.objects.get(pk=indpk)
					bp.indicadorselc.add(indsaved)

	if request.POST.has_key('indicadoresporcentaje[]'):
		for i in request.POST.getlist('indicadoresporcentaje[]'):
			ind=IndicadoresPorcentaje.objects.get(id=i)
			if not ind in bp.indicadorespor.all():
				bp.indicadorespor.add(ind)
				nombre1='r-por-'+unicode(ind.id);
				nombre2='r1-por-'+unicode(ind.id);
				indpost={'descripcion': request.POST[nombre2],
						'respuesta': request.POST[nombre1],
						'indicador': 'por-'+unicode(ind.id)}
				indform=Indicadoresselcform(indpost)
				if indform.is_valid():
					indpk=indform.save()
					indsaved=Indicadoresselc.objects.get(pk=indpk)
					bp.indicadorselc.add(indsaved)


def ajax_del(request):
	if request.is_ajax() and request.method == 'POST':
		
		if not BuenasPracticas.objects.filter(pk=request.POST['bpid']).exists():
			return HttpResponse( "Error" )
		
		bp=BuenasPracticas.objects.get(pk=request.POST['bpid'])
		is_adm_institucional = request.user.groups.filter(
					name='Adm. Institucional').exists()
		
		if not is_adm_institucional:
			return HttpResponse( "Error" )
		
		usuario = Usuario.objects.get( user = request.user)
		
		if bp.universidad.id != usuario.universidad.id:
			return HttpResponse( "Error" )

		tipo=request.POST['tipo']

		if tipo=='g':
			if not Gobernanza.objects.filter(pk=request.POST['tipoid']).exists():
				return HttpResponse( "Error" )
			
			gtemp=Gobernanza.objects.get(pk=request.POST['tipoid'])
			
			if gtemp in bp.gobernanza.all():
				bp.gobernanza.remove(gtemp)
				gtemp.delete()
				return HttpResponse("Exito")
			else:
				return HttpResponse( "Error" )
		
		if tipo=='f':
			if not Financiacion.objects.filter(pk=request.POST['tipoid']).exists():
				return HttpResponse( "Error" )
			
			ftemp=Financiacion.objects.get(pk=request.POST['tipoid'])
			
			if ftemp in bp.financiacion.all():
				bp.financiacion.remove(ftemp)
				ftemp.delete()
				return HttpResponse( "Exito" )
			else:
				return HttpResponse( "Error" )
		
		if tipo=='p':
			if not Participantes.objects.filter(pk=request.POST['tipoid']).exists():
				return HttpResponse( "Error" )
			
			ptemp=Participantes.objects.get(pk=request.POST['tipoid'])
			
			if ptemp in bp.participantes.all():
				bp.participantes.remove(ptemp)
				ptemp.delete()
				return HttpResponse( "Exito" )
			else:
				return HttpResponse( "Error" )
		
		return HttpResponse( "Error" )
	return HttpResponse( "Error" )


def ajax(request):
	if request.is_ajax() and request.method == 'POST':
		respuesta=''
		
		for i in IndicadoresBooleanos.objects.filter(dimension=request.POST['dimension']):
			respuesta+='<spam><input type="checkbox" name="indicadoresbooleanos[]" value="'+unicode(i.id)+'" id="bol-'+unicode(i.id)+'" onclick="boxclick(\'bol-'+unicode(i.id)+'\', 1);">&nbsp&nbsp'+unicode(i.nombre)+'</input><br></spam><br>'
		for i in IndicadoresChoices.objects.filter(dimension=request.POST['dimension']):
			respuesta+='<spam><input type="checkbox" name="indicadoreschoices[]" value="'+unicode(i.id)+'" id="cho-'+unicode(i.id)+'" onclick="boxclick(\'cho-'+unicode(i.id)+'\', 2);">&nbsp&nbsp'+unicode(i.nombre)+'</input><br></spam><br>'
		for i in IndicadoresEnteros.objects.filter(dimension=request.POST['dimension']):
			respuesta+='<spam><input type="checkbox" name="indicadoresenteros[]" value="'+unicode(i.id)+'" id="ent-'+unicode(i.id)+'" onclick="boxclick(\'ent-'+unicode(i.id)+'\', 3);">&nbsp&nbsp'+unicode(i.nombre)+'</input><br></spam><br>'
		for i in IndicadoresPorcentaje.objects.filter(dimension=request.POST['dimension']):
			respuesta+='<spam><input type="checkbox" name="indicadoresporcentaje[]" value="'+unicode(i.id)+'" id="por-'+unicode(i.id)+'" onclick="boxclick(\'por-'+unicode(i.id)+'\', 4);">&nbsp&nbsp'+unicode(i.nombre)+'</input><br></spam><br>'

		return HttpResponse( respuesta )


def lista_completa( request,  identificador = -1):
	regiones = Region.objects.all()
	universidades = Universidad.objects.all()
	url = request.get_full_path()
	menu = sidebar( request )
	
	if checkpermiso( request.user, Permisos2 ):
		links = False
	else:
		links = True

	context = Context( {
		'regiones': regiones,
		'universidades': universidades,
		'url': url,
		'menu' : menu,
		'links' : links,
	} )

	context_instance = RequestContext( request )
	return render_to_response( 'lista_universidades.html', context,
								context_instance = context_instance )


def lista_universidad(request, identificador = -1):
	if identificador == -1:
		return redirect('/plataforma/buenaspracticas/lista_completa')

	universidad=Universidad.objects.get(pk=identificador)

	buenaspracticasFC=BuenasPracticas.objects.filter(universidad=universidad, dimension=1).order_by('fecha_desde')
	buenaspracticasTC=BuenasPracticas.objects.filter(universidad=universidad, dimension=2).order_by('fecha_desde')
	buenaspracticasCS=BuenasPracticas.objects.filter(universidad=universidad, dimension=3).order_by('fecha_desde')

	menu= sidebar(request)
	context = Context({
			'buenaspracticasFC' : buenaspracticasFC,
			'buenaspracticasTC' : buenaspracticasTC,
			'buenaspracticasCS' : buenaspracticasCS,
			'menu' : menu,
			'universidad' : universidad
            }) 

	context_instance = RequestContext(request)
	return render_to_response('listado_universidad.html', context,
                              context_instance=context_instance)

def muestra_formulario(request, identificador = -1):
	
	if identificador == -1:
		return redirect('/plataforma/buenaspracticas/lista_completa')

	bp=BuenasPracticas.objects.get(pk=identificador)
	indhtml=htmlIndicadoresshow(bp)
	menu= sidebar(request)
	context = Context({
			'menu' : menu,
			'bp' : bp,
			'indhtml' : indhtml
            }) 

	context_instance = RequestContext(request)
	return render_to_response('muestra_formulario.html', context,
                              context_instance=context_instance)

def htmlIndicadores(bp):

	indicho=IndicadoresChoices.objects.filter(dimension=bp.dimension)
	indibol=IndicadoresBooleanos.objects.filter(dimension=bp.dimension)
	indient=IndicadoresEnteros.objects.filter(dimension=bp.dimension)
	indipor=IndicadoresPorcentaje.objects.filter(dimension=bp.dimension)
	indhtml=''
	for i in indibol:
		indhtml+='<spam>'
		if i in bp.indicadoresbol.all():
			indhtml+='<input type="checkbox" name="indicadoresbooleanos[]" value="'+unicode(i.id)+'" checked id="bol-'+unicode(i.id)+'" onclick="boxclick2(\'bol-'+unicode(i.id)+'\', 1);">&nbsp&nbsp'+i.nombre+'</input><br>'
			indhtml+='<spam id="r2-1-bol-'+unicode(i.id)+'" class="span12">'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'bol-'+unicode(i.id):
					if r2.respuesta==1:
						indhtml+='<label class="radio">Si<input id="r-bol-'+unicode(i.id)+'" type="radio" value="1" name="r-bol-'+unicode(i.id)+'" checked></label>'
						indhtml+='<label class="radio">No<input id="r-bol-'+unicode(i.id)+'" type="radio" value="0" name="r-bol-'+unicode(i.id)+'"></label>'
					if r2.respuesta==0:
						indhtml+='<label class="radio">Si<input id="r-bol-'+unicode(i.id)+'" type="radio" value="1" name="r-bol-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">No<input id="r-bol-'+unicode(i.id)+'" type="radio" value="0" name="r-bol-'+unicode(i.id)+'" checked></label>'
					indhtml+='</spam>'
					indhtml+='<input id="r1-bol-'+unicode(i.id)+'" class="span10" type="text" name="r1-bol-'+unicode(i.id)+'" value="'+unicode(r2.descripcion)+'">'
		else:
			indhtml+='<input type="checkbox" name="indicadoresbooleanos[]" value="'+unicode(i.id)+'" id="bol-'+unicode(i.id)+'" onclick="boxclick(\'bol-'+unicode(i.id)+'\', 1);">&nbsp&nbsp'+i.nombre+'</input><br>'
		indhtml+='</spam><br>'
	for i in indicho:
		indhtml+='<spam>'
		if i in bp.indicadorescho.all():
			indhtml+='<input type="checkbox" name="indicadoreschoices[]" value="'+unicode(i.id)+'" checked id="cho-'+unicode(i.id)+'" onclick="boxclick2(\'cho-'+unicode(i.id)+'\', 2);">&nbsp&nbsp'+i.nombre+'</input><br>'
			indhtml+='<spam id="r2-2-cho-'+unicode(i.id)+'" class="span12">'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'cho-'+unicode(i.id):
					if r2.respuesta==4:
						indhtml+='<label class="radio">Excelente<input id="r-cho-'+unicode(i.id)+'" type="radio" value="4" name="r-cho-'+unicode(i.id)+'" checked></label>'
						indhtml+='<label class="radio">Muy buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="3" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="2" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Mala<input id="r-cho-'+unicode(i.id)+'" type="radio" value="1" name="r-cho-'+unicode(i.id)+'"></label>'
					if r2.respuesta==3:
						indhtml+='<label class="radio">Excelente<input id="r-cho-'+unicode(i.id)+'" type="radio" value="4" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Muy buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="3" name="r-cho-'+unicode(i.id)+'" checked></label>'
						indhtml+='<label class="radio">Buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="2" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Mala<input id="r-cho-'+unicode(i.id)+'" type="radio" value="1" name="r-cho-'+unicode(i.id)+'"></label>'
					if r2.respuesta==2:
						indhtml+='<label class="radio">Excelente<input id="r-cho-'+unicode(i.id)+'" type="radio" value="4" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Muy buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="3" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="2" name="r-cho-'+unicode(i.id)+'" checked></label>'
						indhtml+='<label class="radio">Mala<input id="r-cho-'+unicode(i.id)+'" type="radio" value="1" name="r-cho-'+unicode(i.id)+'"></label>'
					if r2.respuesta==1:
						indhtml+='<label class="radio">Excelente<input id="r-cho-'+unicode(i.id)+'" type="radio" value="4" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Muy buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="3" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Buena<input id="r-cho-'+unicode(i.id)+'" type="radio" value="2" name="r-cho-'+unicode(i.id)+'"></label>'
						indhtml+='<label class="radio">Mala<input id="r-cho-'+unicode(i.id)+'" type="radio" value="1" name="r-cho-'+unicode(i.id)+'" checked></label>'
					indhtml+='</spam>'
					indhtml+='<input id="r1-cho-'+unicode(i.id)+'" class="span10" type="text" name="r1-cho-'+unicode(i.id)+'" value="'+unicode(r2.descripcion)+'">'
		else:
			indhtml+='<input type="checkbox" name="indicadoreschoices[]" value="'+unicode(i.id)+'" id="cho-'+unicode(i.id)+'" onclick="boxclick(\'cho-'+unicode(i.id)+'\', 2);">&nbsp&nbsp'+i.nombre+'</input><br>'
		indhtml+='</spam><br>'
	for i in indient:
		indhtml+='<spam>'
		if i in bp.indicadoresent.all():
			indhtml+='<input type="checkbox" name="indicadoresenteros[]" value="'+unicode(i.id)+'" checked id="ent-'+unicode(i.id)+'" onclick="boxclick2(\'ent-'+unicode(i.id)+'\', 3);">&nbsp&nbsp'+i.nombre+'</input><br>'
			indhtml+='<spam id="r2-3-ent-'+unicode(i.id)+'" class="span12">'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'ent-'+unicode(i.id):
					indhtml+='<input id="r-ent-'+unicode(i.id)+'" class="span2" type="number" value="'+unicode(r2.respuesta)+'" name="r-ent-'+unicode(i.id)+'">'
					indhtml+='</spam>'
					indhtml+='<input id="r1-ent-'+unicode(i.id)+'" class="span10" type="text" name="r1-ent-'+unicode(i.id)+'" value="'+unicode(r2.descripcion)+'">'
		else:
			indhtml+='<input type="checkbox" name="indicadoresenteros[]" value="'+unicode(i.id)+'" id="ent-'+unicode(i.id)+'" onclick="boxclick(\'ent-'+unicode(i.id)+'\', 3);">&nbsp&nbsp'+i.nombre+'</input><br>'
		indhtml+='</spam><br>'
	for i in indipor:
		indhtml+='<spam>'
		if i in bp.indicadorespor.all():
			indhtml+='<input type="checkbox" name="indicadoresporcentaje[]" value="'+unicode(i.id)+'" checked id="por-'+unicode(i.id)+'" onclick="boxclick2(\'por-'+unicode(i.id)+'\', 4);">&nbsp&nbsp'+i.nombre+'</input><br>'
			indhtml+='<spam id="r2-4-por-'+unicode(i.id)+'" class="span12">'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'por-'+unicode(i.id):
					indhtml+='<input id="r-por-'+unicode(i.id)+'" class="span2" type="number" value="'+unicode(r2.respuesta)+'" name="r-por-'+unicode(i.id)+'">'
					indhtml+='</spam>'
					indhtml+='<input id="r1-por-'+unicode(i.id)+'" class="span10" type="text" name="r1-por-'+unicode(i.id)+'" value="'+unicode(r2.descripcion)+'">'
		else:
			indhtml+='<input type="checkbox" name="indicadoresporcentaje[]" value="'+unicode(i.id)+'" id="por-'+unicode(i.id)+'" onclick="boxclick(\'por-'+unicode(i.id)+'\', 4);">&nbsp&nbsp'+i.nombre+'</input><br>'
		indhtml+='</spam><br>'

	return indhtml

def htmlIndicadoresshow(bp):
	indicho=IndicadoresChoices.objects.filter(dimension=bp.dimension)
	indibol=IndicadoresBooleanos.objects.filter(dimension=bp.dimension)
	indient=IndicadoresEnteros.objects.filter(dimension=bp.dimension)
	indipor=IndicadoresPorcentaje.objects.filter(dimension=bp.dimension)
	indhtml=''
	for i in indibol:
		if i in bp.indicadoresbol.all():
			indhtml+='<li>'+i.nombre+'<br>'
			indhtml+='<spam><ul>'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'bol-'+unicode(i.id):
					if r2.respuesta==1:
						indhtml+='<li>Si</li>'
					if r2.respuesta==0:
						indhtml+='<li>No</li>'
					indhtml+='</ul></spam>'
					indhtml+=unicode(r2.descripcion)+'</li>'
	for i in indicho:
		if i in bp.indicadorescho.all():
			indhtml+='<li>'+i.nombre+'<br>'
			indhtml+='<spam><ul>'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'cho-'+unicode(i.id):
					if r2.respuesta==4:
						indhtml+='<li>Excelente</li>'
					if r2.respuesta==3:
						indhtml+='<li>Muy buena</li>'
					if r2.respuesta==2:
						indhtml+='<li>Buena</li>'
					if r2.respuesta==1:
						indhtml+='<li>Mala</li>'
					indhtml+='</ul></spam>'
					indhtml+=unicode(r2.descripcion)+'</li>'
	for i in indient:
		if i in bp.indicadoresent.all():
			indhtml+='<li>'+i.nombre+'<br>'
			indhtml+='<spam><ul>'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'ent-'+unicode(i.id):
					indhtml+='<li>Cantidad: '+unicode(r2.respuesta)+'</li>'
					indhtml+='</ul></spam>'
					indhtml+=unicode(r2.descripcion)+'</li>'
	for i in indipor:
		if i in bp.indicadorespor.all():
			indhtml+='<li>'+i.nombre+'<br>'
			indhtml+='<spam><ul>'
			r=bp.indicadorselc.all()
			for r2 in r:
				if r2.indicador == 'por-'+unicode(i.id):
					indhtml+='<li>Porcentaje: '+unicode(r2.respuesta)+'</li>'
					indhtml+='</ul></spam>'
					indhtml+=unicode(r2.descripcion)+'</li>'

	return indhtml